import Vue from 'vue'
import router from '@/router'

export default {
  install(/**@type {Vue} */ Vue) {
    /**格式化时间 */
    Vue.filter('date', (v) => {
      return new Date(v).toLocaleString()
    })
    /**图片地址 */
    Vue.filter('imgurl', (v) => {
      if (!v) return '/image/default.jpg'
      if (typeof v === 'string') return '/image/' + v || 'default.jpg'
      if (Array.isArray(v)) return v.map((e) => '/image/' + e || 'default.jpg')
    })
    /**价格 */
    Vue.filter('price', (/**@type {Number} */ v) => {
      return `￥${Number(v).toFixed(2)}`
    })
    const toListener = function () {
      router.push(JSON.parse(this.dataset.to))
    }
    /**
     * 点击跳转
     * 用以替代router-link
     */
    Vue.directive('to', {
      bind(/**@type {HTMLElement} */ el, binding) {
        el.addEventListener('click', toListener)
        el.dataset.to = JSON.stringify(binding.value)
      },
      update(/**@type {HTMLElement} */ el, binding) {
        el.dataset.to = JSON.stringify(binding.value)
      },
      unbind(/**@type {HTMLElement} */ el) {
        el.removeEventListener('click', toListener)
      },
    })
  },
}
